package cn.calin.day05.demo41Collections;

import java.text.CollationElementIterator;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

/*
    Comparator和Comparable的区别
    Comparable:自己（this）和别人（参数）比较，自己需要重写比较的规则CompareTo方法
    Comparator:相当于找一个第三方的裁判，比较俩个值大小
 */
public class Demo03Sort {
    public static void main(String[] args) {
        ArrayList<Integer> list01=new ArrayList<>();
        list01.add(1);
        list01.add(3);
        list01.add(2);
        System.out.println(list01);//[1,3,2]

        Collections.sort(list01, new Comparator<Integer>() {
            //重写比较的规则
            @Override
            public int compare(Integer o1, Integer o2) {
               // return o1-o2;//升序
                return o2-o1;//降序
            }
        });

        System.out.println(list01);

        ArrayList<Student> list02=new ArrayList<>();
        list02.add(new Student("迪丽热巴",19));
        list02.add(new Student("古力娜扎",20));
        list02.add(new Student("杨幂",17));
        list02.add(new Student("杨幂",18));
        System.out.println(list02);


        /*Collections.sort(list02, new Comparator<Student>() {
            @Override
            public int compare(Student o1, Student o2) {
                //按照年龄升序排序
                return o1.getAge()-o2.getAge();
            }
        });*/
        Collections.sort(list02, new Comparator<Student>() {
            @Override
            public int compare(Student o1, Student o2) {
                //按照年龄升序排序
                int result=o1.getAge()-o2.getAge();
                //如果俩个人的年龄相同，再使用姓名的首字母比较
                if (result==0){
                   result= o1.getName().charAt(0)-o2.getName().charAt(0);
                }

                return result;
            }
        });
        System.out.println(list02);

    }
}
